// Mit dem Rigol DS1000Z-S Trigger aufzeichnen, und die einzelnen
// Aufzeichnungen als Bildschirmkopie einlesen und speichern.

// Anzahl der Aufzeichnungen.
#Records set 20
// Der Dateiname fr die Bildschirmkopien.
// Die Variable 'Number' wird beim Speichern durch ihren Wert ersetzt.
#File set "E:\Record Nr /$Number.png" 

// Das Instrument ber das Netzwerk verbinden.
// Eventuell noch den VXI-Port oder Null, und die
// IP-Adresse der verwendeten Netzwerkkarte angeben.
// Es wird der optionale Name angegeben, damit Einstellungen
// gesetzt werden knnen.
instrument $DS1000Z vxi 192.168.1.52 // 0 192.168.1.39
// Oder mit installierten WinUSB-Treiber ber USB.
//instrument $DS1000Z usbtmc 1AB1 04CE

// Einstellung fr das Instrument vornehmen.
// Zwischen den SCPI-Kommandos 100 Millisekunden warten.
// Ansonst werden manchmal Kommandos nicht bernommen.
$DS1000Z set wait scpi 100

// Auf Standardeinstellungen zurcksetzen und warten.
function scpi write *RST
function wait 10000

// Es wird der integrierte Signalgenerator verwendet.
// Die Einstellungen sind fr eine Verbindung mit
// einem BNC-Kabel gedacht.

// Kanal 1 einstellen.
function scpi write :CHAN1:PROB 1 // 1x
function scpi write :CHAN1:BWL 20M
function scpi write :CHAN1:COUP DC
function scpi write :CHAN1:SCAL 1 // 1 Volt
function scpi write :CHAN1:DISP ON

// Zeitbasis, Speicher und Trigger einstellen.
function scpi write :TRIG:MODE EDGE
function scpi write :TRIG:EDGE:SLOP RFAL
function scpi write :TRIG:EDGE:SOUR CHAN1
function scpi write :TRIG:SWE NORM
function scpi write :ACQ:MDEP 120000 // 120 kS
function scpi write :TIM:MAIN:SCAL 0.02 // 20 ms/DIV

// Den Signalgenerator einstellen.
function scpi write :SOUR1:OUTP:IMP OMEG
function scpi write :SOUR1:FUNC SIN
function scpi write :SOUR1:VOLT 5
function scpi write :SOUR1:FREQ 2 // Hz
function scpi write :SOUR1:OUTP:STAT ON

// Die Record-Funktion einstellen.
function scpi write :FUNC:WREC:ENAB ON
function scpi write :FUNC:WREC:FEND #Records // Die Anzahl der Aufnahmen.

// = = = = = = = = = = = = = = = = = = = = = = = = =
// Warten auf die Besttigung fr die Aufzeichnung.
// = = = = = = = = = = = = = = = = = = = = = = = = =
function beep
function wait msg Um die Aufzeichnung zu starten, auf die Schaltflche 'Ausfhren' klicken.

// Die Aufzeichnung starten und warten bis sie beendet ist.
function scpi write :FUNC:WREC:OPER RUN
string Operate
label Wait
function wait 500
Operate function scpi read :FUNC:WREC:OPER?
Operate equal STOP
false goto Wait

// = = = = = = = = = = = = = = = = = = = = = = = = =
// Vorbereitung fr die Anzeige der Aufzeichnungen.
integer Number
integer Records
image Screencopy
// Die Anzahl der Aufzeichnungen einlesen.
Records function scpi read :FUNC:WREP:FMAX?
// Den Hinweis fr den Richtungswechsel abwarten.
// Es gibt leider kein SCPI-Kommando dafr.
Number set Records
Number sub 1
function scpi write :FUNC:WREP:OPER PAUS
function scpi write :FUNC:WREP:FCUR $Number
Number add 1
function scpi write :FUNC:WREP:FCUR $Number
Number add 1
function scpi write :FUNC:WREP:FCUR $Number
function wait 2000

// = = = = = = = = = = = = = = = = = = = = = = = = =
// Warten auf die Besttigung fr das Einlesen der Bildschirmkopien.
// = = = = = = = = = = = = = = = = = = = = = = = = =
function beep
function wait msg Um die Bildschirmkopien zu speichern, auf die Schaltflche 'Ausfhren' klicken.

// Jetzt in einer Schleife die Aufzeichnungen anzeigen.
Number set 0
label Replay
Number add 1
function scpi write :FUNC:WREP:FCUR $Number
// Warten, ansonst wird die Aufzeichnung nicht immer richtig angezeigt,
// bzw. die angezeigte Nummer.
function wait 300

// Die Bildschirmkopie einlesen und speichern.
Screencopy function screencopy
Screencopy function save #File

// Weiter bis alle Aufzeichnungen durch sind.
Number equal Records
false goto Replay

// Ende.
function beep
